class_name DelayedDamageEffect
extends Effect

var amount := 0
var receiver_modifier_type := Modifier.Type.DMG_TAKEN
var targets: Array[Node] = []  # 保存目标

func execute(targets: Array[Node]) -> void:
	print("🔍 DelayedDamageEffect.execute() 被调用")
	print("  📥 传入的targets数量: %d" % targets.size())
	print("  💾 保存的self.targets数量: %d" % self.targets.size())
	
	# 确定要使用的目标数组
	var final_targets: Array[Node] = []
	
	# 如果传入了有效的目标，使用传入的目标；否则使用保存的目标
	if targets.size() > 0:
		# 确保传入的targets是正确类型
		for target in targets:
			if target is Node:
				final_targets.append(target)
		print("  ✅ 使用传入的目标，有效目标数量: %d" % final_targets.size())
	else:
		# 使用保存的目标
		final_targets = self.targets.duplicate()  # 创建副本避免引用问题
		print("  ✅ 使用保存的目标，目标数量: %d" % final_targets.size())
	
	print("  🎯 最终目标数量: %d" % final_targets.size())
	
	for target in final_targets:
		if not target or not is_instance_valid(target):
			print("  ❌ 目标无效，跳过")
			continue
		if target is Enemy or target is Player:
			print("💥 延迟伤害触发: %s 受到 %d 点伤害 (伤害前血量: %d, 护甲: %d)" % [
				target.name, amount, target.stats.health, target.stats.block
			])
			
			# 通过take_damage方法应用伤害，确保ModifierHandler生效
			target.take_damage(amount, receiver_modifier_type)
			
			if sound:
				SFXPlayer.play(sound)
			
			print("💀 延迟伤害后状态: 血量: %d, 护甲: %d" % [
				target.stats.health, target.stats.block
			])
			
			# 立即检查死亡状态，不依赖Stats的自动检查
			if target.stats.health <= 0:
				print("💀 延迟伤害导致 %s 死亡，立即处理" % target.name)
				# 立即调用死亡检查，不使用延迟
				target._check_death()
		else:
			print("  ❌ 目标不是Enemy或Player类型: %s" % target.get_class()) 
